/* PR target/19005 */
extern void abort(void);

int v, s;

void bar(int a, int b) {
  unsigned char x = v;

  if (!s) {
    if (a != x || b != (unsigned char)(x + 1))
      abort();
  } else if (a != (unsigned char)(x + 1) || b != x)
    abort();
  s ^= 1;
}

int foo(int x) {
  unsigned char a = x, b = x + 1;

  bar(a, b);
  a ^= b;
  b ^= a;
  a ^= b;
  bar(a, b);
  return 0;
}

int main(void) {
  for (v = -10; v < 266; v++)
    foo(v);
  return 0;
}
